OA办公软件与PDF文件联系紧密,PDF格式的文件也是办公人员必须掌握的!  设为首页 加入收藏夹 我来推荐 
您的位置:首页 > PDF应用技术 > PDF开发技术
PDF开发技术
Asp.Net/C#使用iTextSharp生成PDF书签
日期:2010-10-20 21:47:49 人气: 标签:
Asp.Net/C#使用iTextSharp生成PDF书签
 
本例要实现的功能:
  1. 生成一个PDF文件,包含5个页面,页面内容包括文字和图片,用于测试,不限细节;
  2. 为此PDF生成书签bookmarks,每个页面对应一个书签,点击书签,导航到相应的页面;

使用的iTextSharp版本为 4.1.6.0

实现的代码如下:

Document doc = new Document(PageSize.A4);
try
{
    #region 载入亚洲字体资源,无此操作的话,不能显示包括中文、日文、
韩文等内容
    BaseFont.AddToResourceSearch("iTextAsian.dll");
    BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
    BaseFont bf = BaseFont.CreateFont("STSong-Light",
 "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    Font font = new Font(bf, 14);
    #endregion

    PdfWriter writer = PdfWriter.GetInstance(doc,
 new FileStream("bookmarks.pdf", FileMode.Create));
    doc.Open();

    ////PDF文件每页显示的文字内容
    string[] pdfTextContents = {
                                   "Adobe 公司旗下的 PDF 文件格式,
是一款普遍流行的格式 ... ...",
                                   "下面这张图片,是三角猫的个人博客
 http://oapdf.com/ 的截图",
                                   "一只可爱的小猫咪,哈哈",
                                   "小白兔,白又白,两只耳朵竖起来,
爱吃鱼翅和燕窝...囧",
                                   "来张卡通吧,意思意思"
                               };

    ////PDF文件每页显示的图片路径
    string[] pdfImagePaths = {
                                 "pdf.png",
                                 "zu14.png",
                                 "cat.jpg",
                                 "rabbit.jpg",
                                 "cartoon.jpg"
                             };

    ////PDF每页对应的书签
    string[] pdfBookmarks = {
                                "PDF文件格式",
                                "三角猫博客",
                                "猫咪图",
                                "小白兔",
                                "卡通动物图"
                            };

    ////下面开始为PDF文件,添加页面内容

    for (int i = 0; i < 5; i++)
    {
        doc.Add(new Paragraph(pdfTextContents[i], font));
        doc.Add(Image.GetInstance(Path.Combine(
AppDomain.CurrentDomain.BaseDirectory, pdfImagePaths[i])));
        doc.NewPage();
    }

    ////下面为PDF各页面,添加对应的书签
    PdfContentByte cb = writer.DirectContent;

    //书签树的根
    PdfOutline root = cb.RootOutline;

    for (int i = 0; i < 5; i++)
    {
        PdfAction action = PdfAction.GotoLocalPage(i + 1, 
new PdfDestination(PdfDestination.FIT), writer);

        PdfOutline outLine = new PdfOutline(root, action, 
pdfBookmarks[i]);
    }

    //保存并关闭PDF文件
    doc.Close();

    writer = null;

    Process.Start("bookmarks.pdf");
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
    Console.ReadKey();
}
共有条评论信息评论信息
栏目分类

站点说明 | 站点导航 | 站点公告 |
OAPDF.COM版权所有 2009 V1.1